DNS (Domain Name System,網域名稱系統)是網際網路這龐大系統中相當重要的一個環節,試想一下,當你想要連上Google 搜尋資料時,輸入的不是www.google.com.tw
而是142.251.43.3
,這串數字就已經夠難記了,更別說還有上千萬個網站,一般人不可能記得住這些數字,而正是有了DNS 我們才能夠這麼輕鬆的連上各個網站。
網域名稱(Domain Name),可簡稱為網域或域名,它的作用是把IP 位址轉換成一般人看得懂的文字,也就是一串由「ASCII字元」和「點」組成的網址。
以Google 的域名www.google.com.tw
為例,將域名用點分割並由右至左閱讀,每個部份都有其特殊的資訊。
頂級域
頂級域 (Top Level Domain,TLD) 又分成兩類,國碼頂級域和通用頂級域。
了解完頂級域後,可以看出www.google.com.tw
的tw 和com 分別代表國碼頂級域和通用頂級域。
二級域
二級域 (Second Level Domain,SLD),在辨識完頂級域後就是二級域,如www.google.com.tw
中的google 就是二級域,zh.wikipedia.org
中的wikipedia 也是二級域。
子域名
子域名 (Subdomain),是比二級域更左側的域名,通常是www
,也有像zh.wikipedia.org
是zh
。
國際化域名 (Internationalized Domain Name,IDN),是指部分或完全使用特殊文字或非拉丁字母組成的域名,包含中文、俄語、阿拉伯語等。
在DNS 中,國際化域名使用Punycode 撰寫並以ASCII 字串儲存。
DNS (Domain Name System,網域名稱系統,又稱域名系統),DNS 是網際網路運作中的一個環節,它是能夠將域名和IP 位址相互對應的一個分散式資料庫系統,使用TCP/UDP 埠53,限制每一級域名最大長度63個字元,域名總長度不可超過253個字元。
要使用DNS 伺服器才能夠使用DNS,DNS 伺服器中預先登記了網域名稱與IP 位址,並記錄各種資訊。而資源紀錄便是記錄在DNS 伺服器中的資訊,常見的紀錄類型有:
代碼 | 內容 |
---|---|
A | 對應主機名稱的IP 位址 |
AAAA | 對應主機名稱的IPv6 位址 |
CNAME | 對應主機名稱和其別名 |
MX | 對應網域名稱的電子郵件伺服器 |
NS | 管理網域名稱的DNS 伺服器 |
PTR | 對應IP 位址的主機名稱 |
世界上的域名有上億個,沒有任何一台DNS 伺服器能儲存所有的域名,資料都是分散在世界各地的DNS 伺服器上,而它們的結構就類似於電腦的目錄樹結構,最頂端的是一個根(root)目錄,旗下分為好幾個基本類別名稱。
而DNS 查詢的方式有兩種,遞迴和迭代:
遞迴查詢
在遞迴查詢中,客戶端向本地DNS 伺服器發送查詢請求後,若本地DNS 伺服器沒有相關域名的快取資料,會以DNS 客戶的身分向其他DNS 伺服器發送查詢請求,若其他DNS 伺服器也沒有相關域名的快取資料,也會以DNS 客戶的身分向其他DNS 伺服器發送查詢請求,直到返回最終結果,執行步驟如下:
迭代查詢
與遞迴查詢不同,迭代查詢時,其他DNS 伺服器不會代替本地DNS 伺服器發送查詢請求,而是回傳下一級域伺服器的IP 位址,讓本地DNS 伺服器向其他DNS 伺服器發送請求,執行步驟如下:
看完艱澀複雜的IP 協議後,在看到域名系統就覺得和藹可親許多,如果只是後端工程師的話,其實大概了解域名系統的概念就可以了,其他就先有個印象,如果遇到再複習會比較快~~
Domain name - MDN Web Docs Glossary: Definitions of Web-related terms | MDN
What is a domain name? | Domain name vs. URL | Cloudflare
DNS - MDN Web Docs Glossary: Definitions of Web-related terms | MDN
What is DNS? | How DNS works | Cloudflare